package com.yt.web.unit;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 *                       
 * @Filename: RegExpValidator.java
 * @Version: 1.0
 * @Author:  姚成龙
 * @Email: 289911401@qq.com
 *
 */
public class RegExpValidator {

    /**
     * @param str 待验证的字符串 2015.05.07
     * @return 如果是符合用户名(用户名称只能由字母,数字,下划线和汉字组成)的字符串,5-25个字符，返回<b>true</b>,否则为<b>false</b>
     */
    public static boolean isUserName(String str) {
//        String regex= "^[a-z]|[A-Z]|[0-9]|[\\u4e00-\\u9fa5]|_+$";
        String regex= "^[a-zA-Z0-9_\\u4e00-\\u9fa5]{5,25}+$";
        return match(regex, str);
    }

    /**
     * 正则<a href="http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address/1931322#1931322">参见</a>
     * 原正则“^[^@]+@[^@]+$”无法验证“ab.91241@.163.com”邮件
     * @param str 待验证的字符串
     * @return 如果是符合邮箱格式的字符串,返回<b>true</b>,否则为<b>false</b>
     */
    public static boolean isEmail(String str) {
        String regex="^([^.@]+)(\\.[^.@]+)*@([^.@]+\\.)+([^.@]+)$";
        return match(regex, str);
    }
    
    /**
     * 
     * @param str  待验证的字符串
     * @return     如果是符合手机格式的字符串,返回<b>true</b>,否则为<b>false</b>
     */
    public static boolean isPhoneNum(String str){
        String regex="^((13[0-9])|(14[0-9])|(15[0-9])|(17[0-9])|(18[0-9]))\\d{8}$";
        return match(regex,str);
    }
    /** 
     * @param regex 正则表达式字符串
     * @param str   要匹配的字符串
     * @return 如果str 符合 regex的正则表达式格式,返回true, 否则返回 false;
     */
    private static boolean match(String regex, String str) {
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        return matcher.matches();
    }

}
